home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_a / bugs5.act < prev    next >
Text File  |  1995-04-22  |  8KB  |  291 lines

  1.     ACTION! BUG SHEET #3 - part 5
  2.  
  3. -------------------------------------
  4.  
  5.         ACTION MANUAL ERRATA
  6.  
  7. First of all, you need to know which
  8. version of the manual you have.  If
  9. Part III is the Language, then you
  10. have the first version of the manual.
  11. Otherwise, you have the second
  12. (newest) version.  Unfortunately,
  13. both manuals contain content as well
  14. as typographical errors.  We'll skip
  15. the typos and concentrate on the
  16. content errors, since typos don't
  17. impair your understanding of the
  18. language (although you may wonder
  19. where we learned to spell).
  20.  
  21. VERSION 1 ERRATA:
  22.  
  23. PAGE   ERROR
  24.   2    In the last paragraph, it says
  25.        that the library is on the
  26.        disk.  This is not true.  It's
  27.        in your cartridge.
  28.  
  29.  23    Under the description of
  30.        <BACK-S>, the comparison with
  31.        the Atari screen editor is
  32.        exactly reversed.  If you are
  33.        in REPLACE mode, this key
  34.        works as in the Atari editor.
  35.  
  36.  26    Under <CTRL><SHIFT>T, it says
  37.        you may not use lower-case
  38.        characters as tags.  This is
  39.        untrue.
  40.  
  41.  48    In the NOTE preceeding 4.3,
  42.        you should add "The *, /, and
  43.        MOD operators result in an
  44.        implied INT type.  For this
  45.        reason, multiplication,
  46.        division, and modulus of large
  47.        CARD numbers does not always
  48.        work properly."
  49.  
  50.  49    Section 4.4 says that you may
  51.        only have one special operator
  52.        in a complex relational
  53.        expression.  This is untrue.
  54.        For example, the following is
  55.        perfectly legal:
  56.  
  57.          (x=7 AND y#10) OR z<100
  58.  
  59.  82    Section 6.2.3 implies that you
  60.        may not use a function as a
  61.        procedure.  This is not true.
  62.        You may call a function as
  63.        though it were a procedure,
  64.        but the value returned from
  65.        the function is ignored.
  66.  
  67.  97    Section 8.1.1 states that you
  68.        may either initialize a
  69.        POINTER to an address or give
  70.        it a value.  Only the second
  71.        is possible, and you should
  72.        use this form:
  73.  
  74.            BYTE POINTER x=<value>
  75.  
  76.          Not this:
  77.            BYTE POINTER x=[<value>]
  78.  
  79.  99    In example #1 there are two
  80.        PrintF statements which have
  81.        "ptr" as one parameter.  These
  82.        should be "bptr", not "ptr".
  83.  
  84. 101    In the last example of ARRAY
  85.        declaration (BYTE ARRAY
  86.        tests(5)...), the dimension is
  87.        overruled by the
  88.        initialization options, and so
  89.        its dimension is only three.
  90.        To fill only the first 3 of 5
  91.        elements, do the following:
  92.  
  93.          BYTE ARRAY tests(5)=
  94.                   [4 7 18 0 0]
  95.  
  96. 104    In example #3 you see the
  97.        program line "PrintE(b)".
  98.        This should read
  99.        "PrintE(barray)".
  100.  
  101. 108    Section 8.3.1.2 states that
  102.        you can initialize the fields
  103.        of a record when you declare
  104.        it.  This is untrue; you may
  105.        only initialize its address.
  106.  
  107. 110    The program line "rec.level =
  108.        InputB()" should read
  109.        "rec.level = GetD(7)".
  110.  
  111. 112    Same as previous error.
  112.  
  113. 115    Same as previous error.
  114.  
  115. 112    The program line
  116.        "continue=InputB()" should
  117.        read "continue=GetD(7)"
  118.  
  119. 120    The program line
  120.        "mode=InputB()" should read
  121.        "mode=GetD(7)", and the
  122.        program line "PrintE(name)"
  123.        should read "PrintE(nameptr)".
  124.  
  125. 115    Same as previous error.
  126.  
  127. 122    The program line
  128.        "incctr=chgclr" should read
  129.        "incclr=chgclr".
  130.  
  131. 142    Section 5.3 states that you
  132.        should not use channel 7.
  133.        ACTION! uses this channel to
  134.        get characters from the
  135.        keyboard, and you may use it
  136.        to do this also.  However,
  137.        don't close this channel or
  138.        alter its configuration in any
  139.        way.
  140.  
  141. 153    The example of declaring an
  142.        ACTION! procedure at an
  143.        address is wrong!  If you do
  144.        this, the internal pointer to
  145.        the procedure will point to
  146.        the specified address, but the
  147.        code generated by the
  148.        procedure will not be there.
  149.        Instead, it will be in with
  150.        your main code.  Use procedure
  151.        and function addressing ONLY
  152.        to call machine language
  153.        routines.
  154.  
  155. 161    Where the table of contents
  156.        lists the routines in section
  157.        2.3, it should read:
  158.  
  159.          PrintBD  NOT  PrintDB
  160.          PrintCD  NOT  PrintDC
  161.          PrintID  NOT  PrintDI
  162.  
  163. 162    Where the table of contents
  164.        lists the routines in sections
  165.        6.7 and 6.8, it should read:
  166.  
  167.          PeekC  NOT  CPeek
  168.          PokeC  NOT  CPoke
  169.  
  170. 165    Error in section 2.3.  See
  171.        changes for pg. 161 and make
  172.        similar corrections.
  173.  
  174. 179    Section 6.4 states some
  175.        information concerning the
  176.        results of misusing the SCopy
  177.        routine, detailing that the
  178.        routine does string trucation,
  179.        etc., to make the procedure
  180.        work.  This is not true.  You
  181.        must make sure that the
  182.        strings are compatible in
  183.        size.
  184.  
  185. 181    Section 6.8 states that the
  186.        parameters to Poke and PokeC
  187.        consist only of an address.
  188.        Instead, they consist of an
  189.        address and a value, as
  190.        follows:
  191.  
  192.        Poke(<address>,<BYTE value>)
  193.        PokeC(<address>,<CARD value>)
  194.  
  195. 182    Section 6.11.  MoveBlock will
  196.        move a maximum block of 256
  197.        bytes in versions 3.0 to 3.4
  198.        of ACTION!  Versions 3.5 and
  199.        up will move any number of
  200.        bytes.
  201.  
  202. 191    Some error numbers are wrong.
  203.        The corrections are:
  204.  
  205.        14  Out of Space
  206.        15  Missing DO
  207.        19  Missing OD
  208.        24  Illegal FOR statement
  209.        26  Nesting Too Deep
  210.        27  Illegal TYPE reference
  211.        28  Illegal RETURN
  212.        128 BREAK key abort
  213.  
  214.        Also, error 62 is error 61,
  215.        and 54 & 56 do not exist.
  216.  
  217. 197    In the PrintF statement, %D
  218.        should be changed to %U.
  219.  
  220. VERSION 2 ERRATA:
  221.  
  222. PAGE   ERROR
  223.  38    Section 2.7, paragraph 3.  The
  224.        last sentence states that you
  225.        can RUN compiled ACTION!
  226.        programs from disk.  This is
  227.        untrue.  The RUN command will
  228.        only compile and run ACTION!
  229.        source files.  Use DOS to run
  230.        compiled object files.
  231.  
  232.  39    The last RUN example (RUN
  233.        PrintE()) will not work, since
  234.        RUN expects a file name.  Use
  235.        the "Xecute" command instead.
  236.  
  237.  63    In the TECHNICAL NOTE
  238.        preceeding section 4.3, "*"
  239.        should be changed to "*, /, or
  240.        MOD".
  241.  
  242. 126    The last assignment on the
  243.        page makes newrecord point to
  244.        the current record in the
  245.        array, not the end of the
  246.        array.
  247.  
  248. 132    The program line
  249.        "mode=InputB()" should be
  250.        changed to "mode=GetD(7)".
  251.  
  252. 138    The program line "IF
  253.        sub(1)=str(ctr)" should read
  254.        "IF sub(1)=str(ctrl)".
  255.  
  256. 163    The PutDE procedure requires
  257.        only a channel as a parameter,
  258.        and does not put out both a
  259.        character and a <RETURN>.
  260.        Rather, it puts out a <RETURN>
  261.        only.
  262.  
  263. 172    In graphics mode 0 and all
  264.        text windows, color 1 is the
  265.        character luminance, color 2
  266.        is the background color, and
  267.        color 3 is unused.
  268.  
  269. 174    In section 5.6, references to
  270.        the "lower right corner"
  271.        should instead be "lower left
  272.        corner".
  273.  
  274. 180    Section 6.1.2 states some
  275.        information concerning the
  276.        results of misusing the SCopy
  277.        routine, detailing that the
  278.        routine does string
  279.        truncating, etc.  This is not
  280.        true.  You must make sure that
  281.        the strings are compatible in
  282.        size.
  283.  
  284. 182    Section 6.11.  MoveBlock will
  285.        move a maximum block of 256
  286.        bytes in versions 3.0 to 3.4
  287.        of ACTION!  Versions 3.5 and
  288.        up will move any number of
  289.        bytes.
  290.  
  291.